package error

// ==================
// error-error: 错误包
// ==================

// ---- KtError ----

type KtError interface {
	Error() string
	Message() string
	Value() interface{}
}

// ---- DuplicateValue ----

type DuplicateValue struct {
	msg   string
	value string
}

// NewDuplicateValue new
func NewDuplicateValue(value string) *DuplicateValue {
	err := new(DuplicateValue)
	err.value = value
	err.msg = "duplicate value "
	return err
}

func (receiver *DuplicateValue) Error() string {
	return receiver.msg + receiver.value
}

func (receiver *DuplicateValue) Value() interface{} {
	return receiver.value
}

func (receiver *DuplicateValue) Message() string {
	return receiver.msg
}

// ---- NotExistValue ----

type NotExistValue struct {
	msg   string
	value string
}

// NewNotExistValue new
func NewNotExistValue(value string) *NotExistValue {
	err := new(NotExistValue)
	err.value = value
	err.msg = "not exist value "
	return err
}

func (receiver *NotExistValue) Error() string {
	return receiver.msg + receiver.value
}

func (receiver *NotExistValue) Value() interface{} {
	return receiver.value
}

func (receiver *NotExistValue) Message() string {
	return receiver.msg
}
